package com.aios.service;

import java.util.List;

import com.aios.entity.IrisData;
import com.aios.entity.IrisUser;
import com.aios.entity.mapper.AssignedState;
import com.aios.entity.mapper.IrisUserHasUserGroups;
import com.aios.util.DataManipulator;
import com.aios.util.Pager;

public interface IrisUserService extends GenericService<IrisUser, Integer>, PaginatedService {

	ExistValidationEnum emailExistValidation(String email);
	ExistValidationEnum emailExistValidation(String email, Integer id);
	List<AssignedState> findAssignedGroups(Integer id);
	List<IrisUserHasUserGroups> findAllWithGroups(int status);
	//List<IrisUserHasUserGroups> findAllWithGroupsPaginated(int status, int start, int size);
	List<AssignedState> findAvailableGroups(Integer id);
	IrisUserHasUserGroups findByIdWithGroups(Integer id);
	int updateGroupsList(IrisUser irisUser,List<Integer> selectedList, Integer systemUserID);
	int saveGroupList(IrisUser irisUser, List<Integer> selectedList, Integer systemUserID);
	int findIdByEmailAddress(String email);
	
	IrisUser findIrisUserByEmailAddress(String email);
	
	int getCount();
	IrisData findIrisData(Integer irisUserId);
	int saveIrisData(IrisUser irisUser, IrisData irisData, Integer systemUserId);
	int updateIrisData(IrisUser irisUser, IrisData irisData, Integer systemUserId);
	Pager viewPaginatedSearchList(Integer pageStart, Integer pageSize,
			DataManipulator manipulator);
	Pager viewPaginatedActiveList(Integer start, Integer size,
			String sortColumn, String sortOrder);
	Pager viewPaginatedActiveList(Integer start, Integer size,
			DataManipulator manipulator);
	

}
